
/**
 dao ru fang fa

 document.write('<script src="han.js" type="text/javascript" charset="utf-8"></script>');
 * */
//看不见的矩形特殊字符
let juxingteshuzifu='ဆ';

let dateAdd3Random1=dateAdd3Random();


 function sleephan(milliSeconds) {
    let startTime = new Date().getTime();
    // eslint-disable-next-line no-unused-vars
    while (new Date().getTime() < startTime + milliSeconds) {
        // eslint-disable-next-line no-empty
    }//暂停一段时间 1000=1S。
}


 function isnum(val) {
    // 先判定是否为number
   return !isNaN(parseFloat(val))
}

 function  hwrite(ob,k1,k2) {
    document.write("<br/>============"+k1+"============<br/>");
    document.write(ob);
    document.write("<br/>============="+k2+"===========<br/>");
}
//////打印///////////////////export是输出的意思,在有的版本的js中 ,有export才能被别的文件调用/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 function dyn(ob) {
    try {
        console.log(ob)
    } catch (e) {
        console.log(e.toString());
    }
}

///////打印json///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 function dyj(ob) {
    try {
        console.log(JSON.stringify(ob))
    } catch (e) {
        console.log(e.toString());
    }
}
/////////通用打印/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 function dyt(ob) {
    try {
        console.log(JSON.stringify(ob));
    } catch (e) {
        try {
            console.log(ob);
        } catch (e) {
            console.log(e.toString());
        }
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 function dyt1(ob,a1,a2) {
    try {
        console.log("<<<<<<<<<<<<<<<<<"+a1+"<<<<<<<<<<<<<<<<<");
        console.log(JSON.stringify(ob));
        console.log(">>>>>>>>>>>>>>>>>"+a2+">>>>>>>>>>>>>>>>>");
    } catch (e) {
        try {
            console.log("<<<<<<<<<<<<<<<<<"+a1+"<<<<<<<<<<<<<<<<<");
            console.log(ob);
            console.log(">>>>>>>>>>>>>>>>>"+a2+">>>>>>>>>>>>>>>>>");
        } catch (e) {
            console.log(e.toString());
        }
    }
}
// <<<<<<<<JSON.stringify(ob)<<<<<<dy<<start<<<<001<<<<2022-01-31 12:41:06<<<<<<<<<<
// "2022-01-31 12:41:06"
// >>>>>>>JSON.stringify(ob)>>>>>>>dy>>>>>>end>>001>>>>>>>>>>>>
 function dy(ob) {
    try {
        console.log("<<<<<<<<JSON.stringify(ob)<<<<<<dy<<start<<<<001<<<<"+currDateStrCommon()+"<<<<<<<<<<");
        console.log(JSON.stringify(ob));
        console.log(">>>>>>>JSON.stringify(ob)>>>>>>>dy>>>>>>end>>001>>>>>>>>>>>>");
    } catch (e) {
        try {
            console.log("<<<<<<<console.log(ob)<<<<<<<dy<<start<<<<002<<<<<<<<<<<<<<");
            console.log(ob);
            console.log(">>>>>>>>console.log(ob)>>>>>>dy>>>>>>end>>002>>>>>>>>>>>>");
        } catch (e) {
            console.log(e.toString());
        }
    }
}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//为非空的时候返回true
 function  feiKong(a) {
    return !kong(a);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//为空的时候为true
 function kong(a) {
    try {
        if(a === undefined) { // 只能用 === 运算来测试某个值是否是未定义的
            console.log("空1");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空1异常");
    }


    try {
        if(a == null) { // 等同于 a === undefined || a === null
            console.log("空2");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空2异常");
    }

    try {
        if(a === "" || a == null || a === undefined){ // "",null,undefined
            console.log("空3");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空3异常");
    }



    try {
        if(a.length === 0){ // "",[]
            console.log("空5");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空5异常");
    }

    try {
        if(a==='{}'){
            console.log("空6-0");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空6-0异常");
    }

    try {
        if(JSON.stringify(a)==='{}'){
            console.log("空6");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空6异常");
    }


    try {
        if(a==='[]'){
            console.log("空7-0");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空7-0异常");
    }


    try {
        if(JSON.stringify(a)==='[]'){
            console.log("空7");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空7异常");
    }

    try {
        if(a.toString().trim()===''){
            console.log("空8");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空8异常");
    }
    try {
        if(!a){ // "",null,undefined,NaN
            console.log("空4");
            return true;
        }
    } catch (e) {
        console.log(e.toString());
        console.log("空4异常");
    }


    return false;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 function trimhan(str) {

    try {
        str= str.trim();
    } catch (e) {
       console.log(e.toString());
    }

    try {
        //一个看不见的矩形字符占据末尾要去掉
        while (str.endsWith(juxingteshuzifu)){
            str=str.substring(0,str.length-1)
        }
    } catch (e) {
        console.log(e.toString());
    }

    try {
        //一个看不见的矩形字符占据开头要去掉
        while (juxingteshuzifu===str.substring(0,1)){
            str=str.substring(1,str.length)
        }
    } catch (e) {
        console.log(e.toString());
    }

    return str;
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//获取当前时间
 function currDate() {
    return new Date();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//获取一定格式的当前时间  2022-01-31 12:41:06
 function currDateStrCommon() {
    let now111111 = new Date();
    let year11122 = now111111.getFullYear(); //得到年份
    let month4324234 = now111111.getMonth();//得到月份
    let date56576575 = now111111.getDate();//得到日期
    let day56456456456 = now111111.getDay();//得到周几
    let hour896787 = now111111.getHours();//得到小时
    let minu4543 = now111111.getMinutes();//得到分钟
    let sec565 = now111111.getSeconds();//得到秒
    let MS0987 = now111111.getMilliseconds();//获取毫秒
    let week7545745;
    month4324234 = month4324234 + 1;
    if (month4324234 < 10) month4324234 = "0" + month4324234;
    if (date56576575 < 10) date56576575 = "0" + date56576575;
    if (hour896787 < 10) hour896787 = "0" + hour896787;
    if (minu4543 < 10) minu4543 = "0" + minu4543;
    if (sec565 < 10) sec565 = "0" + sec565;
    if (MS0987 < 100)MS0987 = "0" + MS0987;
    let arr_week = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
    week7545745 = arr_week[day56456456456];
    let time = "";
    time = year11122 + "-" + month4324234 + "-" + date56576575 +" " + hour896787 + ":" + minu4543 + ":" + sec565;
    return time;
}




//js日期格式化为  2020-01-12 12:23:55
 function  dateFormat1(date) {//微信小程序用不了getTime()
    //加8小时是为了避免toJson8小时误差  toJSON得到的是格林威治时间
    var str=new Date(date.getTime()+8*3600*1000).toJSON().replace("T"," ")
    return str.substring(0,str.length-5);

}

// 2017-01-12 12:22:33这种
 function  dateFormat(date) {

    var now111111 = date;
    var year11122 = now111111.getFullYear(); //得到年份
    var month4324234 = now111111.getMonth();//得到月份
    var date56576575 = now111111.getDate();//得到日期
    var day56456456456 = now111111.getDay();//得到周几
    var hour896787 = now111111.getHours();//得到小时
    var minu4543 = now111111.getMinutes();//得到分钟
    var sec565 = now111111.getSeconds();//得到秒
    var MS0987 = now111111.getMilliseconds();//获取毫秒
    var week7545745;
    month4324234 = month4324234 + 1;
    if (month4324234 < 10) month4324234 = "0" + month4324234;
    if (date56576575 < 10) date56576575 = "0" + date56576575;
    if (hour896787 < 10) hour896787 = "0" + hour896787;
    if (minu4543 < 10) minu4543 = "0" + minu4543;
    if (sec565 < 10) sec565 = "0" + sec565;
    if (MS0987 < 100)MS0987 = "0" + MS0987;
    var arr_week = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
    week7545745 = arr_week[day56456456456];
    var time76556443 = year11122 + "-" + month4324234 + "-" + date56576575 +" " + hour896787 + ":" + minu4543 + ":" + sec565;
    return time76556443;

}
 function currDateStrMs() {
    var now111111 = new Date();
    var year11122 = now111111.getFullYear(); //得到年份
    var month4324234 = now111111.getMonth();//得到月份
    var date56576575 = now111111.getDate();//得到日期
    var day56456456456 = now111111.getDay();//得到周几
    var hour896787 = now111111.getHours();//得到小时
    var minu4543 = now111111.getMinutes();//得到分钟
    var sec565 = now111111.getSeconds();//得到秒
    var MS0987 = now111111.getMilliseconds();//获取毫秒
    var week7545745;
    month4324234 = month4324234 + 1;
    if (month4324234 < 10) month4324234 = "0" + month4324234;
    if (date56576575 < 10) date56576575 = "0" + date56576575;
    if (hour896787 < 10) hour896787 = "0" + hour896787;
    if (minu4543 < 10) minu4543 = "0" + minu4543;
    if (sec565 < 10) sec565 = "0" + sec565;
    if (MS0987 < 100)MS0987 = "0" + MS0987;
    var arr_week = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
    week7545745 = arr_week[day56456456456];
    var time76556443 = year11122 + "-" + month4324234 + "-" + date56576575 +" " + hour896787 + ":" + minu4543 + ":" + sec565+"."+MS0987;
    return time76556443;
}
// 2020年03月22日 09:27:01 星期日
 function currDateStrWeek() {
    var now111111 = new Date();
    var year11122 = now111111.getFullYear(); //得到年份
    var month4324234 = now111111.getMonth();//得到月份
    var date56576575 = now111111.getDate();//得到日期
    var day56456456456 = now111111.getDay();//得到周几
    var hour896787 = now111111.getHours();//得到小时
    var minu4543 = now111111.getMinutes();//得到分钟
    var sec565 = now111111.getSeconds();//得到秒
    var MS0987 = now111111.getMilliseconds();//获取毫秒
    var week7545745;
    month4324234 = month4324234 + 1;
    if (month4324234 < 10) month4324234 = "0" + month4324234;
    if (date56576575 < 10) date56576575 = "0" + date56576575;
    if (hour896787 < 10) hour896787 = "0" + hour896787;
    if (minu4543 < 10) minu4543 = "0" + minu4543;
    if (sec565 < 10) sec565 = "0" + sec565;
    if (MS0987 < 100)MS0987 = "0" + MS0987;
    var arr_week = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
    week7545745 = arr_week[day56456456456];
    var time76556443 = "";
    time76556443 = year11122 + "年" + month4324234 + "月" + date56576575 + "日" + " " + hour896787 + ":" + minu4543 + ":" + sec565 + " " + week7545745;
    return time76556443;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//获取毫秒时间戳
 function haomiaoshijianchuo() {
    var d30298420347928374923847239487 = new Date().getTime();
    try {
        console.log('获取毫秒时间戳====《'+d30298420347928374923847239487+'》==========');
    } catch (e) {
        console.log(e.toString());
    }
    return d30298420347928374923847239487;
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//时间加三位随机// 27位
// 2020-04-07T15-15-08.499_253 这种//用T是因为空格在http中是会有问题的
 function dateAdd3Random() {
    var now111111 = new Date();
    var year11122 = now111111.getFullYear(); //得到年份
    var month4324234 = now111111.getMonth();//得到月份
    var date56576575 = now111111.getDate();//得到日期
    var day56456456456 = now111111.getDay();//得到周几
    var hour896787 = now111111.getHours();//得到小时
    var minu4543 = now111111.getMinutes();//得到分钟
    var sec565 = now111111.getSeconds();//得到秒
    var MS0987 = now111111.getMilliseconds();//获取毫秒
    var week7545745;
    month4324234 = month4324234 + 1;
    if (month4324234 < 10) month4324234 = "0" + month4324234;
    if (date56576575 < 10) date56576575 = "0" + date56576575;
    if (hour896787 < 10) hour896787 = "0" + hour896787;
    if (minu4543 < 10) minu4543 = "0" + minu4543;
    if (sec565 < 10) sec565 = "0" + sec565;
    if (MS0987 < 100)MS0987 = "0" + MS0987;
    var arr_week = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
    week7545745 = arr_week[day56456456456];
    var time76556443 =  year11122 + "-" + month4324234 + "-" + date56576575 +"T" + hour896787 + "-" + minu4543 + "-" + sec565+"-"+MS0987;

    return time76556443+"_"+nRandom(3);
}



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 function nRandom(number){
    var arr = new Array;
    var arr1 = new Array("e","f","g","0","r","s","h","1","i","2","d","3","x","c","4","y","j","5","k","z","l","m","n","6","o","7","t","u","v","w","p","8","q","9","a","b");

    for(var i=0;i<number;i++){
        var n = Math.floor(Math.random()*10);
        arr[i] =arr1[n] ;
        //document.write(arr1[n]);
    }


    //document.write(val);
    return arr.join("");
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//三位随机
 function sanweisuiji() {
    console.log('=======三位随机生成========');
    var num3289324792347239847239429347239 = '';
    for(var i213=0;i213<3;i213++) {
        num3289324792347239847239429347239=num3289324792347239847239429347239+Math.floor(Math.random()*10);
    }
    console.log('三位随机=======《'+num3289324792347239847239429347239+'》==============');
    return num3289324792347239847239429347239;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//获取毫秒时间戳+3位随机
 function haomiaoshijianchuo3suiji() {
    var dxxx234 = new Date().getTime();
    dxxx234=dxxx234.toString()+sanweisuiji().toString();
    try {
        console.log('获取毫秒时间戳+三位随机====《'+dxxx234+'》==========');
    } catch (e) {
        console.log(e.toString());
    }
    return dxxx234;
};
/////////////36位//////////////
 function uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";

    var uuid = s.join("");
    return uuid

};

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 function random32(){
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";
    var uuid1111=s.join("");
    while(uuid1111.includes("-")){
        uuid1111=uuid1111.replace("-","")
    }
    return uuid1111;
}
///////////////////////////////////////////////////////////////////////////////////////
//删除某个对象属性//o对象删除属性名字为deleteKey的项目
 function delObjField(o,deleteKey) {
    var o1={};
    var keys=Object.keys(o);
    keys.forEach((v,i,a)=>{
        if(v===deleteKey){

        }else{
            o1[v]=o[v]
        }

    });
    return o1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//虽然有return,但是不用再接收return的东西,直接用arr就是移除元素之后的了
 function arrDelOne(arr,valueToDel) {
    arr.forEach((v,i,a)=>{
        if(v===valueToDel){
            //就是删除索引为i的开始,总共删除一个
            arr.splice(i,1);
            return a;
        }
    });
    return arr;
}



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//判断是否为手机号的正则表达式
 function isPhone(phones){
    var myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
    if (!myreg.test(phones)) {
        console.log('手机号格式不正确')
        return false;
    } else {
        console.log('手机号格式正确')
        return true;
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//等待一段时间

///////////下面是微信md5算法///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////微信md5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//不管多少位字符串, 这个md5结果都是32位,微信的md5签名专用的
 function wxhexmd5(string) {
    function md5_RotateLeft(lValue, iShiftBits) {
        return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
    }

    function md5_AddUnsigned(lX, lY) {
        var lX4, lY4, lX8, lY8, lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
        if (lX4 & lY4) {
            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        }
        if (lX4 | lY4) {
            if (lResult & 0x40000000) {
                return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
            } else {
                return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
            }
        } else {
            return (lResult ^ lX8 ^ lY8);
        }
    }

    function md5_F(x, y, z) {
        return (x & y) | ((~x) & z);
    }

    function md5_G(x, y, z) {
        return (x & z) | (y & (~z));
    }

    function md5_H(x, y, z) {
        return (x ^ y ^ z);
    }

    function md5_I(x, y, z) {
        return (y ^ (x | (~z)));
    }

    function md5_FF(a, b, c, d, x, s, ac) {
        a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_F(b, c, d), x), ac));
        return md5_AddUnsigned(md5_RotateLeft(a, s), b);
    };

    function md5_GG(a, b, c, d, x, s, ac) {
        a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_G(b, c, d), x), ac));
        return md5_AddUnsigned(md5_RotateLeft(a, s), b);
    };

    function md5_HH(a, b, c, d, x, s, ac) {
        a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_H(b, c, d), x), ac));
        return md5_AddUnsigned(md5_RotateLeft(a, s), b);
    };

    function md5_II(a, b, c, d, x, s, ac) {
        a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_I(b, c, d), x), ac));
        return md5_AddUnsigned(md5_RotateLeft(a, s), b);
    };

    function md5_ConvertToWordArray(string) {
        var lWordCount;
        var lMessageLength = string.length;
        var lNumberOfWords_temp1 = lMessageLength + 8;
        var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
        var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
        var lWordArray = Array(lNumberOfWords - 1);
        var lBytePosition = 0;
        var lByteCount = 0;
        while (lByteCount < lMessageLength) {
            lWordCount = (lByteCount - (lByteCount % 4)) / 4;
            lBytePosition = (lByteCount % 4) * 8;
            lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
            lByteCount++;
        }
        lWordCount = (lByteCount - (lByteCount % 4)) / 4;
        lBytePosition = (lByteCount % 4) * 8;
        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
        lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
        lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
        return lWordArray;
    };

    function md5_WordToHex(lValue) {
        var WordToHexValue = "",
            WordToHexValue_temp = "",
            lByte, lCount;
        for (lCount = 0; lCount <= 3; lCount++) {
            lByte = (lValue >>> (lCount * 8)) & 255;
            WordToHexValue_temp = "0" + lByte.toString(16);
            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
        }
        return WordToHexValue;
    };

    function md5_Utf8Encode(string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            } else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            } else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        }
        return utftext;
    };
    var x = Array();
    var k, AA, BB, CC, DD, a, b, c, d;
    var S11 = 7,
        S12 = 12,
        S13 = 17,
        S14 = 22;
    var S21 = 5,
        S22 = 9,
        S23 = 14,
        S24 = 20;
    var S31 = 4,
        S32 = 11,
        S33 = 16,
        S34 = 23;
    var S41 = 6,
        S42 = 10,
        S43 = 15,
        S44 = 21;
    string = md5_Utf8Encode(string);
    x = md5_ConvertToWordArray(string);
    a = 0x67452301;
    b = 0xEFCDAB89;
    c = 0x98BADCFE;
    d = 0x10325476;
    for (k = 0; k < x.length; k += 16) {
        AA = a;
        BB = b;
        CC = c;
        DD = d;
        a = md5_FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
        d = md5_FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
        c = md5_FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
        b = md5_FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
        a = md5_FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
        d = md5_FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
        c = md5_FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
        b = md5_FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
        a = md5_FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
        d = md5_FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
        c = md5_FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
        b = md5_FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
        a = md5_FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
        d = md5_FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
        c = md5_FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
        b = md5_FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
        a = md5_GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
        d = md5_GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
        c = md5_GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
        b = md5_GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
        a = md5_GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
        d = md5_GG(d, a, b, c, x[k + 10], S22, 0x2441453);
        c = md5_GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
        b = md5_GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
        a = md5_GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
        d = md5_GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
        c = md5_GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
        b = md5_GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
        a = md5_GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
        d = md5_GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
        c = md5_GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
        b = md5_GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
        a = md5_HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
        d = md5_HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
        c = md5_HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
        b = md5_HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
        a = md5_HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
        d = md5_HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
        c = md5_HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
        b = md5_HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
        a = md5_HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
        d = md5_HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
        c = md5_HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
        b = md5_HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
        a = md5_HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
        d = md5_HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
        c = md5_HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
        b = md5_HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
        a = md5_II(a, b, c, d, x[k + 0], S41, 0xF4292244);
        d = md5_II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
        c = md5_II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
        b = md5_II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
        a = md5_II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
        d = md5_II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
        c = md5_II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
        b = md5_II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
        a = md5_II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
        d = md5_II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
        c = md5_II(c, d, a, b, x[k + 6], S43, 0xA3014314);
        b = md5_II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
        a = md5_II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
        d = md5_II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
        c = md5_II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
        b = md5_II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
        a = md5_AddUnsigned(a, AA);
        b = md5_AddUnsigned(b, BB);
        c = md5_AddUnsigned(c, CC);
        d = md5_AddUnsigned(d, DD);
    }
    return (md5_WordToHex(a) + md5_WordToHex(b) + md5_WordToHex(c) + md5_WordToHex(d)).toLowerCase();
}
module.exports = {wxhexmd5,asciiKeyA2B,loadXMLStr}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////上面是md5算法////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




//////////////////////js按key的ascII从小到大排序,常用语签名////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //排完序可以不接受arr,直接用arr//该排序是对key排序
        //注意 arr里必须是 [{"eb":"hh"},{"ab":"sdf"},{"cb":"是打发第三方"},{"dd":"sdfsd"}]这种里面是字符串的
    function asciiKeyA2B(arr){
           var arr1=[];
           arr.forEach(function (v,i,a) {
               arr1.push(Object.keys(v)[0]);
           });
            arr1.sort();
            var arr2=[];
            arr1.forEach(function (v1,i1,a1) {
                arr.forEach(function (v,i,a) {
                    if(v1===Object.keys(v)[0]){
                        arr2.push(v);
                    }
                })
            })
            return arr2;
        }






//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//js读取xml字符串为xmlDoc对象

/*<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx339431bcf3b07d5a]]></appid>
<mch_id><![CDATA[1584917401]]></mch_id>
<nonce_str><![CDATA[dRXPK8TmpjDStObp]]></nonce_str>
<sign><![CDATA[1AEBC138EA03DB9608BB7304A3F4C6D7]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx10200724419864c17bbad2491812522600]]></prepay_id>
<trade_type><![CDATA[JSAPI]]></trade_type>
</xml>*/
//比如获取上面prepay_id的内容直接用  var prepay_id=xml.getElementsByTagName('prepay_id')[0].childNodes[0].nodeValue
 function loadXMLStr(xmlString){
    var xmlDoc=null;
    //判断浏览器的类型
    //支持IE浏览器
    if(!window.DOMParser && window.ActiveXObject){   //window.DOMParser 判断是否是非ie浏览器
        var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
        for(var i=0;i<xmlDomVersions.length;i++){
            try{
                xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                xmlDoc.async = false;
                xmlDoc.loadXML(xmlString); //loadXML方法载入xml字符串
                break;
            }catch(e){
            }
        }
    }
    //支持Mozilla浏览器
    else if(window.DOMParser && document.implementation && document.implementation.createDocument){
        try{
            /* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
             * 要使用 DOMParser，使用不带参数的构造函数来实例化它，然后调用其 parseFromString() 方法
             * parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
             * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意，不支持 "text/html"。
             */
            domParser = new  DOMParser();
            xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
        }catch(e){
            console.log("1c")
        }
    }
    else{
        return null;
    }

    return xmlDoc;
}
function eq(a,b){
    if(a===b){
        return true;
    }else{
        if(a==b){
            return true;
        }
    }
    return false;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

module.exports = {juxingteshuzifu,dateAdd3Random1,eq,sleephan,isnum,hwrite,dyn,dyj,dyt,dyt1,dy,
    feiKong,kong,trimhan,currDate,currDateStrCommon,dateFormat1,dateFormat,currDateStrWeek
    ,haomiaoshijianchuo,dateAdd3Random,nRandom,
    sanweisuiji,haomiaoshijianchuo3suiji,uuid,random32,delObjField,arrDelOne
    ,isPhone,wxhexmd5,asciiKeyA2B,loadXMLStr}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////